{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-05-22T08:07:52.159881Z",
     "start_time": "2024-05-22T08:07:52.154894Z"
    }
   },
   "source": [
    "from langchain.memory import ChatMessageHistory\n",
    "# from langchain.chat_models import ChatOpenAI  # 旧的import方式，已被弃用。\n",
    "from langchain_openai import ChatOpenAI\n",
    "import os\n",
    "from langchain_core.messages import *"
   ],
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-22T08:07:53.583755Z",
     "start_time": "2024-05-22T08:07:52.161876Z"
    }
   },
   "cell_type": "code",
   "source": [
    "MyChatModel = ChatOpenAI(base_url='https://bd-gateway-agent.sdpsg.101.com/openai/v1/', api_key=os.getenv('OPENAI_API_KEY')) \n",
    "History = ChatMessageHistory()"
   ],
   "id": "6c784a354255f766",
   "outputs": [],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-22T08:07:53.598715Z",
     "start_time": "2024-05-22T08:07:53.584753Z"
    }
   },
   "cell_type": "code",
   "source": [
    "History.add_messages([SystemMessage(content='你是一个在商业领域有着丰富经验的专业人士，可以向用户提供宝贵的经验')\n",
    "                      , HumanMessage(content=\"\"\"\n",
    "                      作为一个水果店老板，我希望你根据我提供的各种水果的成本、每种水果计划的售价，规划我的最佳进货方案，从而帮助我实现盈利的最大化。\n",
    "                      其中，每种水果的成本如下：\n",
    "                        序号 | 水果 | 颜色 | 价格（美元）\n",
    "                        0 | 蘋果 | 红色 | 1.20\n",
    "                        1 | 香蕉 | 黄色 | 0.50\n",
    "                        2 | 橙子 | 橙色 | 0.80\n",
    "                        3 | 草莓 | 红色 | 2.50\n",
    "                        4 | 蓝莓 | 蓝色 | 3.00\n",
    "                        5 | 猕猴桃 | 綠色 | 1.00\n",
    "                        6 | 芒果 | 橙色 | 1.50\n",
    "                        7 | 葡萄 | 紫色 | 2.00\n",
    "                      每种水果计划的售价如下：\n",
    "                        序号 | 水果 | 颜色 | 价格（美元）\n",
    "                        0 | 蘋果 | 红色 | 10.20\n",
    "                        1 | 香蕉 | 黄色 | 8.50\n",
    "                        2 | 橙子 | 橙色 | 9.80\n",
    "                        3 | 草莓 | 红色 | 7.50\n",
    "                        4 | 蓝莓 | 蓝色 | 15.00\n",
    "                        5 | 猕猴桃 | 綠色 | 11.00\n",
    "                        6 | 芒果 | 橙色 | 9.50\n",
    "                        7 | 葡萄 | 紫色 | 8.00\n",
    "                      \"\"\")\n",
    "                      ])\n",
    "\n",
    "print(History.messages)"
   ],
   "id": "83f80345f7f3741",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[SystemMessage(content='你是一个在商业领域有着丰富经验的专业人士，可以向用户提供宝贵的经验'), HumanMessage(content='\\n                      作为一个水果店老板，我希望你根据我提供的各种水果的成本、每种水果计划的售价，规划我的最佳进货方案，从而帮助我实现盈利的最大化。\\n                      其中，每种水果的成本如下：\\n                        序号 | 水果 | 颜色 | 价格（美元）\\n                        0 | 蘋果 | 红色 | 1.20\\n                        1 | 香蕉 | 黄色 | 0.50\\n                        2 | 橙子 | 橙色 | 0.80\\n                        3 | 草莓 | 红色 | 2.50\\n                        4 | 蓝莓 | 蓝色 | 3.00\\n                        5 | 猕猴桃 | 綠色 | 1.00\\n                        6 | 芒果 | 橙色 | 1.50\\n                        7 | 葡萄 | 紫色 | 2.00\\n                      每种水果计划的售价如下：\\n                        序号 | 水果 | 颜色 | 价格（美元）\\n                        0 | 蘋果 | 红色 | 10.20\\n                        1 | 香蕉 | 黄色 | 8.50\\n                        2 | 橙子 | 橙色 | 9.80\\n                        3 | 草莓 | 红色 | 7.50\\n                        4 | 蓝莓 | 蓝色 | 15.00\\n                        5 | 猕猴桃 | 綠色 | 11.00\\n                        6 | 芒果 | 橙色 | 9.50\\n                        7 | 葡萄 | 紫色 | 8.00\\n                      ')]\n"
     ]
    }
   ],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-22T08:08:05.201986Z",
     "start_time": "2024-05-22T08:07:53.599713Z"
    }
   },
   "cell_type": "code",
   "source": [
    "AiResponse = MyChatModel.invoke(History.messages)\n",
    "\n",
    "strAiResponse = str(AiResponse).replace('\\\\n', '\\n')\n",
    "print(strAiResponse)"
   ],
   "id": "b246fce10cde2f0a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "content='为了帮助你规划最佳进货方案，我将根据每种水果的成本和计划售价，计算每种水果的利润，并按照利润最大化的原则建议你的进货方案。\n",
      "\n",
      "首先，计算每种水果的利润：\n",
      "利润 = 售价 - 成本\n",
      "\n",
      "接下来，按照利润最大化的原则，你应该优先采购利润最高的水果。以下是每种水果的利润情况：\n",
      "\n",
      "| 序号 | 水果   | 颜色  | 成本（美元） | 售价（美元） | 利润（美元） |\n",
      "|----|------|-----|--------|--------|--------|\n",
      "| 0  | 蘋果  | 红色  | 1.20   | 10.20  | 9.00   |\n",
      "| 5  | 猕猴桃 | 绿色  | 1.00   | 11.00  | 10.00  |\n",
      "| 7  | 葡萄  | 紫色  | 2.00   | 8.00   | 6.00   |\n",
      "| 2  | 橙子  | 橙色  | 0.80   | 9.80   | 9.00   |\n",
      "| 6  | 芒果  | 橙色  | 1.50   | 9.50   | 8.00   |\n",
      "| 3  | 草莓  | 红色  | 2.50   | 7.50   | 5.00   |\n",
      "| 1  | 香蕉  | 黄色  | 0.50   | 8.50   | 8.00   |\n",
      "| 4  | 蓝莓  | 蓝色  | 3.00   | 15.00  | 12.00  |\n",
      "\n",
      "根据上表，你应该优先采购蓝莓、猕猴桃和蘋果，因为它们的利润最高。这样可以最大化你的盈利。\n",
      "\n",
      "当然，你还需要考虑市场需求、季节性变化等因素来制定最佳的进货方案。希望这些建议能对你有所帮助，祝你的水果店生意兴隆！如果有任何其他问题或需要进一步帮助，请随时告诉我。' response_metadata={'token_usage': {'completion_tokens': 637, 'prompt_tokens': 523, 'total_tokens': 1160}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': 'fp_2f57f81c11', 'finish_reason': 'stop', 'logprobs': None} id='run-c3289ea1-eee6-47c6-b62b-e5438874ac4b-0'\n"
     ]
    }
   ],
   "execution_count": 32
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
